package com.zretc.support.service;

import com.zretc.support.entity.Score;
import com.zretc.support.entity.ScoreToPart;
import com.zretc.support.tool.PageData;
import org.springframework.data.domain.Page;

import java.util.List;


public interface ScoreService {
    /**
     * 根据学生编号、考试名称、学生名称查询+分页
     * @param keywords
     * @param page
     * @param limit
     * @return
     */
    Page<Score> selectByIdOrName(String keywords, Integer page, Integer limit);

    /**
     * 添加成绩
     * @param score
     * @return
     */
    int addScore(Score score);

    /**
     * 修改综合题得分+修改总分
     * @param answerId
     * @param score
     * @return
     */
    int updScore(int answerId, double score, int examId, String userId, int scoreId);

    /**
     * 根据成绩编号删除成绩
     * @param scoreId
     * @return
     */
    int delScoreById(Integer scoreId);

    /**
     * 计算总分
     * @param examId
     * @param userId
     * @return
     */
    double getTotalScore(int examId, String userId);

    /**
     * 分页+模糊（max/min/avg）
     * @param keywords
     * @param page
     * @param limit
     * @return
     */
    Page<ScoreToPart> getPart(String keywords, Integer page, Integer limit);

    /**
     * 获取 某场考试的所有学生的成绩
     * @param examId
     * @return
     */
    List<Score> getScoresByExamId(long examId);

    /**
     * 根据学生编号查询成绩
     * @param userId
     * @param examName
     * @param page
     * @param size
     * @return
     */
    PageData<Score> getScoreByUserId(String userId, String examName, int page, int size);

    /**
     * 根据考试编号和学生编号获取学生成绩
     * @param examId
     * @param userId
     * @return
     */
    Score getScoresByExamIdAndUerId(int examId,String userId);

    /**
     * 修改总分
     * @return
     */
    int updScore1(Score score);

    /**
     * 模糊查询获取某学生的成绩
     * @param userId
     * @return
     */
    Page<Score> getScoresByUserId(String userId,String keywords,int page,int limit);



}
